#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "Encoder.h"
#include "Motor.h"
#include "usart.h"
#include "OLED.h"

// 全局变量记录上次时间和计数值
uint32_t Last_Time = 0;
int32_t Last_Count1 = 0, Last_Count2 = 0;
extern float rpm; // 假设已经定义了一个全局变量rpm来存储转速
int16_t cnt = 0;
// 主循环中调用
int main(void)
{
	SystemInit();
	// 电机配置
	Motor_Init();
	
	OLED_Init();
	//	// 配置编码器
	Encoder_Configuration();
	
	USART1_Init();
	USART1_SendString("hello world!\n");

	RCC_ClocksTypeDef RCC_Clocks;	//
	RCC_GetClocksFreq(&RCC_Clocks); // 
	// ´òÓ¡Ê±ÖÓÐÅÏ¢
//	Serial_Printf("SYSCLK=%d,HCLK=%d,PCLK1=%d,PCLK2=%d,ADCCLK=%d MHz\r\n",
//				  RCC_Clocks.SYSCLK_Frequency / 1000000,  // 64
//				  RCC_Clocks.HCLK_Frequency / 1000000,	  // 64
//				  RCC_Clocks.PCLK1_Frequency / 1000000,	  // 32
//				  RCC_Clocks.PCLK2_Frequency / 1000000,	  // 64
//				  RCC_Clocks.ADCCLK_Frequency / 1000000); // 32


	/*OLED显示*/
		OLED_ShowString(2, 1, "Encoder1:!");	//1行3列显示字符串HelloWorld!
	OLED_ShowSignedNum(2, 7, -66, 2);		//2行7列显示有符号十进制数字-66，长度为2
	
	Set_PWM1_Duty(30);
	Set_PWM2_Duty(20);
	char buf[50]={0};
	while (1)
	{

		// // 示例：每500ms输出一次数据
		Delay_ms(500);

		cnt = Encoder_Get(); // 获取当前计数值
//  	Serial_Printf("cnt: %d\n", cnt);
		Serial_Printf("cnt:%d rpm: %f rpm\n", cnt,rpm);
		sprintf(buf,"cnt:%d",cnt);
		OLED_ShowString(1, 1,buf);
		
		sprintf(buf,"En:%.2f",rpm);
		OLED_ShowString(2, 1,buf);

	}
}
